#pragma once

#include<iostream>
#include<string>
#include"util.hpp"
namespace ns_log
{
   using namespace ns_util;
   //日志等级
   enum
   {
      INFO,//常规  0
      DEBUG,//调试 1
      WARNING,//告警-不影响后序 2
      ERROR,//错误 3 
      FATAL //系统错误 4
   };

   std::ostream &Log(const std::string& level,const std::string &file_name,int line)
   {
      //添加日志等级
      std::string message ="[";
      message+=level;
      message+="]";

      //添加报错文件名称
      message +="[";
      message +=file_name;
      message +="]";

      //添加报错行
      message+="[";
      message +=std::to_string(line);
      message +="]";

      //日志时间戳
      message +="[";
      message +=TimeUtil::GetTimeStamp();
      message +="]";

      //cout 本质是包含缓冲区的
      std::cout<<message; //放到缓冲区中

      return std::cout;
   }
   
   // LOG(INFO)<< "message" <<"\n"
   // 加上#以字符串形式打印出来
    #define LOG(level) Log(#level,__FILE__,__LINE__)
}